/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Validador;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author williambartko
 */
public class ValidadorGenerico {

    public String retiraEspacosEmBranco(String string) {

        return string = string.replace(" ", "").trim();
    }

    public boolean validaCampoVazioOuNulo(String campo) {
        if (campo == null) {
            return false;
        }

        if (!campo.equals("")) {
            return true;
        }
        return false;
    }

    public boolean validaFormatoDoEmail(String email) {
        //Set the email pattern string
        Pattern p = Pattern.compile(".+@.+\\.[a-z]+");

        //Match the given string with the pattern
        Matcher m = p.matcher(email);

        //check whether match is found
        boolean matchFound = m.matches();

        if (matchFound) {
//            System.out.println("Valid Email Id.");
            return true;
        } else {
//            System.out.println("Invalid Email Id.");
            return false;
        }
    }

    public boolean aceitaApenasNumerosECom10Caracteres(String string) {
        //Set the string pattern
        Pattern p = Pattern.compile("[0-9]" + "[0-9]" + "[0-9]" + "[0-9]" + "[0-9]"
                + "[0-9]" + "[0-9]" + "[0-9]" + "[0-9]" + "[0-9]");

        //Match the given string with the pattern
        Matcher m = p.matcher(string);

        //check whether match is found
        boolean matchFound = m.matches();

        if (matchFound) {
            //       System.out.println("Validado!.");
            return true;
        } else {
            //     System.out.println("Nao Validado!");
            return false;
        }
    }

    public boolean aceitaApenasDeUmASete(Integer numero) {
        if (numero >= 1 && numero <= 7) {
            return true;
        }
        return false;
    }

   public static boolean aceitaApenasHorariosValidos(Object horario) {

          if(horario == null){
              return false;
          }

          String hora = horario.toString();
          if (hora.equals(":")) {
              return false;
          }
          String horas = null;
          String minutos = null ;
          int conta_horas = 0;
          int conta_minutos = 0;
          horas  = hora.substring(0,2);
          minutos  = hora.substring(3,5);
          conta_horas = Integer.parseInt(horas);
          conta_minutos = Integer.parseInt(minutos);
          if(conta_horas > 23) {
              return false;
          }
          if(conta_minutos > 59) {
              return false;
          }
          return true;
      }

       public static boolean aceitaApenasDatasValidas(String dateStr) {

        if (dateStr == null) {
            return false;
        }

        Pattern p = Pattern.compile("[0-3]" + "[0-9]" +"/"+
                                    "[0-1]" + "[0-9]" +"/"+
                                    "[1-2]" + "[0-9]" + "[0-9]" + "[0-9]");

        Matcher m = p.matcher(dateStr);

        //check whether match is found
        boolean matchFound = m.matches();

        if (!matchFound) {
            //       System.out.println("Validado!.");
            return false;
        }



        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Calendar cal = new GregorianCalendar();
        try {
            // gerando o calendar
            cal.setTime(df.parse(dateStr));
        } catch (ParseException ex) {
//            Logger.getLogger(ValidadorGenerico.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Problemas com a data!->excessão da classe");
        }

        // separando os dados da string para comparacao e validacao
        String[] data = dateStr.split("/");
        String dia = data[0];
        String mes = data[1];
        String ano = data[2];

        // testando se hah discrepancia entre a data que foi
        // inserida no caledar e a data que foi passada como
        // string. se houver diferenca, a data passada era
        // invalida
        if ((new Integer(dia)).intValue() != (new Integer(cal.get(Calendar.DAY_OF_MONTH))).intValue()) {
            // dia nao casou
            return (false);
        } else if ((new Integer(mes)).intValue() != (new Integer(cal.get(Calendar.MONTH) + 1)).intValue()) {
            // mes nao casou
            return (false);
        } else if ((new Integer(ano)).intValue() != (new Integer(cal.get(Calendar.YEAR))).intValue()) {
            // ano nao casou
            return (false);
        }

        return (true);
    }
}





